"""
迭代器:迭代器是一个可以被逐个访问的对象

__iter__   ---->返回对象本身
___next__   --->下一个元素  没有报错

"""
# nums=[123,12,34]
# n=iter(nums) #创建迭代器
# print(next(n))
# print(next(n))
# print(next(n))
# print(next(n))

#生成器是一个简化版的迭代器主要是用于生成序列值
class MyRange:
    def __init__(self, start, end,step=1):
        self.current = start # 当前值
        self.end = end # 结束值
        self.step = step # 结束值
    def __iter__(self):
        return self
    def __next__(self):
        if self.current < self.end:
            val = self.current  # 保存当前值

            self.current += self.step  #
            return val
        else:
            raise StopIteration


# 装饰器:是一个增强版的函数
def decorator(func):
    def wrapper():
        print("执行前")
        func()
        print("执行后")
    return wrapper
@decorator
def say_hello():
    print("Hello!")

say_hello()